package fiuba.algo3.vista;

import javax.swing.*;

import java.awt.event.*;
import java.awt.Color;
import java.io.IOException;

import fiuba.algo3.control.Controlador;
import fiuba.algo3.modelo.Direccion;

@SuppressWarnings("serial")
public class Botonera extends JInternalFrame implements ActionListener{

	private Controlador controlador;
	private JFPrincipal principal;
	
	private JButton botonDerecha;
	private JButton botonIzquierda;
	private JButton botonArriba;
	private JButton botonAbajo;
	private JButton botonFinalizar;
	private JButton botonGuardar;
	
	public Botonera(JFPrincipal principal,Controlador controlador){
		this.principal = principal;
		this.controlador = controlador;
		setLayout(null);
		
		//colorearlo
		setBackground(new Color(153,102,255));
		
		//elimar bordes y northPane
		this.setBorder(null);
		javax.swing.plaf.InternalFrameUI ifu= this.getUI();
		((javax.swing.plaf.basic.BasicInternalFrameUI)ifu).setNorthPane(null);
		
		crearBotones();		
	}

	
	private void crearBotones() {

		crearBotonesDireccionales();

		botonFinalizar=new JButton("Finalizar");
		botonFinalizar.setBounds(50,250,100,30);
		this.add(botonFinalizar);
		botonFinalizar.addActionListener(this);

		botonGuardar=new JButton("Guardar");
		botonGuardar.setBounds(50,300,100,30);
		this.add(botonGuardar);
		botonGuardar.addActionListener(this);
	}

	
	private void crearBotonesDireccionales() {
		botonIzquierda=new JButton("Izquierda");
		botonIzquierda.setBounds(0,150,100,30);
		this.add(botonIzquierda);
		botonIzquierda.addActionListener(this);

		botonDerecha=new JButton("Derecha");
		botonDerecha.setBounds(100,150,100,30);
		this.add(botonDerecha);
		botonDerecha.addActionListener(this);

		botonArriba=new JButton("Arriba");
		botonArriba.setBounds(50,120,100,30);
		this.add(botonArriba);
		botonArriba.addActionListener(this);

		botonAbajo=new JButton("Abajo");
		botonAbajo.setBounds(50,180,100,30);
		this.add(botonAbajo);
		botonAbajo.addActionListener(this);
	}

	
	public void setControlador(Controlador newControlador){
		this.controlador = newControlador;
	}
	
	
	public void actionPerformed(ActionEvent e) {
		// No se usa un switch, porque este no soporta Object.
		Object clickeado = e.getSource();
        
		if ( clickeado == botonDerecha ) {
            controlador.moverVehiculoHacia(Direccion.DERECHA);
            principal.actualizar();
        }
		
		else if ( clickeado == botonIzquierda ) {
            controlador.moverVehiculoHacia(Direccion.IZQUIERDA);
            principal.actualizar();
        }
		
		else if ( clickeado == botonArriba ) {
            controlador.moverVehiculoHacia(Direccion.ARRIBA);
            principal.actualizar();
        }
		
		else if ( clickeado == botonAbajo ) {
            controlador.moverVehiculoHacia(Direccion.ABAJO);
            principal.actualizar();
        }
		
		else if ( clickeado == botonFinalizar ) {
            System.exit(0);
        }
	    
		else if ( clickeado == botonGuardar ){
	    	try {
				controlador.guardarPartida();
			} catch (IOException e1) {
				// No deberia pasar nunca, si sucede, pincha.
				e1.printStackTrace();
			}
	    }
	}	
}